package structuralModel.decoratorModel;

/**
 * 功能描述: 装饰者 调味品的缓冲类, 这里用来计算咖啡+调味品的价格
 *  调味品: 糖,牛奶,巧克力,旺仔,奶油等
 * 2024/02/09
 *
 * @see Drink
 * ZhangYi
 */
public class Decorator extends Drink{ // 这里继承的是: 价格和描述信息 私有成员,可以设置 属性值
    /**
     * 组合咖啡饮品 获取咖啡的价格和描述信息
     */
    private Drink drink;

    /**
     * 功能描述: 构造函数 的方式注入的咖啡饮品,获取咖啡的价格 和描述信息
     *
     * @param drink
     * @return
     */
    public Decorator(Drink drink) {
        this.drink = drink;
    }

    /**
     * 功能描述: 获取 调味品+饮品的花费 的价格
     *
     * @return float
     */
    @Override
    protected float cost() {
        return getPrice()+drink.cost();
    }

    /**
     * 功能描述: 获取描述信息
     *
     * @return {@link String }
     */
    @Override
    public String getDesc() {
        return drink.getDesc()+" 添加调味品 "+super.getDesc()+" 调味品的价格是 "+super.getPrice()+" 添加完后价格是 "+ cost();
    }
}
